package com.wanlian.router.net.netty2.model;

import io.netty.channel.ChannelId;

import java.nio.channels.Channel;
import java.util.HashMap;
import java.util.Map;

public class SessionPool {

//    public Map<String, ChannelInfo> publicKeyChannelMap; //= new HashMap<String, ChannelId>();
//    private Map<ChannelId, Session> sessionMap; //= new HashMap<ChannelId, Session>();
//
//    public SessionPool() {
//        publicKeyChannelMap = new HashMap<String, ChannelInfo>();
//        sessionMap = new HashMap<ChannelId, Session>();
//    }
//
//
//    /**
//     * 添加到session
//     *
//     * @param session
//     */
//    public void addSession(Session session) {
//        if (!sessionMap.containsKey(session.getId())) {
//            sessionMap.put(session.getId(), session);
//            if (!publicKeyChannelMap.containsKey(session.getPublicKey())) {
//                publicKeyChannelMap.put(session.getPublicKey(), new ChannelInfo(session.getId()));
//            }
//        }
//    }
//
//    public Map<ChannelId, Session> getAllSessionMap() {
//        return sessionMap;
//    }
//
//    public Map<ChannelId, Session> getAllSessionMapExceptThis(ChannelId id) {
//        Map<ChannelId, Session> sMap = new HashMap<ChannelId, Session>();
//        for (ChannelId keyid : sessionMap.keySet()) {
//            if (!keyid.equals(id)) {
//                sMap.put(keyid, sMap.get(keyid));
//            }
//        }
//        return sMap;
//    }
//
//    /**
//     * getpmapToString
//     *
//     * @return
//     */
//    public String pmapToString() {
//        StringBuilder stringBuilder = new StringBuilder();
//        stringBuilder.append("[");
//        for (String key : publicKeyChannelMap.keySet()) {
//            stringBuilder.append("{key：" + key + ",channelid:" + publicKeyChannelMap.get(key) + "}");
//        }
//        stringBuilder.append("]");
//        return stringBuilder.toString();
//    }
//
//    /**
//     * 通过channelId删除
//     *
//     * @param id
//     */
//    public String removeSessionByChannelId(ChannelId id) {
//        if (sessionMap.containsKey(id)) {
//            sessionMap.remove(id);
//            String key = "";
//
//            for (String pkey : publicKeyChannelMap.keySet()) {
//                ChannelInfo id2 = publicKeyChannelMap.get(pkey);
//                if (id2.getChannelId().equals(id)) {
//                    key = pkey;
//                    break;
//                }
//            }
//            System.out.println("remove key" + key);
//            if (StringUtil.hasValue(key)) {
//                publicKeyChannelMap.remove(key);
//                return key;
//            }
//        }
//        return null;
//    }
//
//    /**
//     * 通过key删除
//     *
//     * @param key
//     */
//    public synchronized void removeSessionByKey(String key) {
//        if (publicKeyChannelMap.containsKey(key)) {
//            ChannelInfo channelInfo = publicKeyChannelMap.get(key);
//            if (sessionMap.containsKey(channelInfo.getChannelId())) {
//                sessionMap.remove(channelInfo.getChannelId());
//            }
//            publicKeyChannelMap.remove(key);
//        }
//    }
//
//    /**
//     * 通过map删除
//     *
//     * @param map
//     */
//    public synchronized void removeSessionByMap(Map<String, String> map) {
//        for (String key : map.keySet()) {
//            if (publicKeyChannelMap.containsKey(key)) {
//                ChannelInfo channelInfo = publicKeyChannelMap.get(key);
//                System.out.println("Session Remove key:" + key);
//                if (sessionMap.containsKey(channelInfo.getChannelId())) {
//                    sessionMap.remove(channelInfo.getChannelId());
//                }
//                publicKeyChannelMap.remove(key);
//            }
//        }
//    }
//
//    /**
//     * 通过key获取session
//     *
//     * @param publicKey
//     * @return
//     */
//    public Session getSessionByPublicKey(String publicKey) {
//        if (publicKeyChannelMap.containsKey(publicKey)) {
//            ChannelInfo channelInfo = publicKeyChannelMap.get(publicKey);
//            if (sessionMap.containsKey(channelInfo.getChannelId())) {
//                return sessionMap.get(channelInfo.getChannelId());
//            }
//        }
//        return null;
//    }
//
//    public boolean isExist(String publicKey) {
//        if (publicKeyChannelMap.containsKey(publicKey)) {
//            ChannelInfo channelInfo = publicKeyChannelMap.get(publicKey);
//            if (sessionMap.containsKey(channelInfo.getChannelId())) {
//                return true;
//            }
//        }
//        return false;
//    }

}
